OpenSSL: handle SSL_shutdown's errors properly
authorDebian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Wed, 19 Aug 2020 17:40:32 +0000 (18:40 +0100)
committerDmitry Shachnev <mitya57@debian.org>
Wed, 19 Aug 2020 17:40:32 +0000 (18:40 +0100)
commit82de914a259df984af73b368a801ed63c8a1915c
tree54b23ae3dcd171e742d28cfa5534e144f5932753
parentc881a20c18dafce1bb366be10e9853c54c388c50
OpenSSL: handle SSL_shutdown's errors properly

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=8ddffc6ba4f38bb8
Last-Update: 2020-08-19

Do not call SSL_shutdown on a session that is in handshake state (SSL_in_init(s)
returns 1). Also, do not call SSL_shutdown if a session encountered a fatal
error (SSL_ERROR_SYSCALL or SSL_ERROR_SSL was found before). If SSL_shutdown
was unsuccessful (returned code != 1), we have to clear the error(s) it queued.
Unfortunately, SSL_in_init was a macro in OpenSSL 1.0.x. We have to
resolve SSL_state to implement SSL_in_init.

Gbp-Pq: Name CVE-2020-13962.diff
src/network/ssl/qsslsocket.cpp
src/network/ssl/qsslsocket_openssl.cpp
src/network/ssl/qsslsocket_openssl11_symbols_p.h
src/network/ssl/qsslsocket_openssl_symbols.cpp
src/network/ssl/qsslsocket_opensslpre11_symbols_p.h
src/network/ssl/qsslsocket_p.h